<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 7.3.0">

  <link rel="apple-touch-icon" sizes="180x180" href="/images/apple-touch-icon-next.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.ico">
  <link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.ico">
  <link rel="mask-icon" href="/images/logo.svg" color="#222">

<link rel="stylesheet" href="/css/main.css">



<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" integrity="sha256-wiz7ZSCn/btzhjKDQBms9Hx4sSeUYsDrTLg7roPstac=" crossorigin="anonymous">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancyapps-ui/5.0.28/fancybox/fancybox.css" integrity="sha256-6cQIC71/iBIYXFK+0RHAvwmjwWzkWd+r7v/BX3/vZDc=" crossorigin="anonymous">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/themes/green/pace-theme-minimal.css">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/pace.min.js" integrity="sha256-gqd7YTjg/BtfqWSwsJOvndl0Bxc8gFImLEkXQT8+qj0=" crossorigin="anonymous"></script>

<script class="next-config" data-name="main" type="application/json">{"hostname":"sumumm.github.io","root":"/","images":"/images","scheme":"Gemini","darkmode":false,"version":"8.19.2","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12},"copycode":{"enable":true,"style":"mac"},"fold":{"enable":true,"height":300},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":true,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":true,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果：${query}","hits_time":"找到 ${hits} 个搜索结果（用时 ${time} 毫秒）","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script>

    <meta name="description" content="本文主要是攻克视频技术课程图像基础和前处理——YUV &amp; RGB：原来图像是这么丰富多彩 的相关笔记，若笔记中有错误或者不合适的地方，欢迎批评指正😃。">
<meta property="og:type" content="article">
<meta property="og:title" content="LV02-图像基础和前处理-02-YUV与RGB">
<meta property="og:url" content="https://sumumm.github.io/post/1a2fb9e6.html">
<meta property="og:site_name" content="苏木">
<meta property="og:description" content="本文主要是攻克视频技术课程图像基础和前处理——YUV &amp; RGB：原来图像是这么丰富多彩 的相关笔记，若笔记中有错误或者不合适的地方，欢迎批评指正😃。">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/1b4d7c24133df818b0187fdf56898a98.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/image-20240123215723043.png">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/0428a59eb7702e4feb9bafd80ac83553.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/9fb26028da7201cdbc7dd7f8dd83b145.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/6b1a9be5614b35bf7c96fe64ed98bc1e.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/79d68992f9c21eff13d118ccabc145aa.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/2f06f11d9c9dd7a49d268e325b846944.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/766ce511056bf5dd3399198398b80016.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/880114b51649cbea783ee0be883fc971.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/62689d6a46003ced023b9838ca0a0845.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/9ed80ef848c52123fb41413abfa26ebd.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/e7a9fcb9f5800eab1fb0a9ed19066588.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/19da3510c564b590f92cf969be01d872.jpeg">
<meta property="og:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/808b8310bb6dfbabfc3d6fbc2ce88057.jpeg">
<meta property="article:published_time" content="2024-01-30T23:44:28.000Z">
<meta property="article:modified_time" content="2025-06-13T16:25:57.065Z">
<meta property="article:author" content="苏木">
<meta property="article:tag" content="极客时间-攻克视频技术">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/1b4d7c24133df818b0187fdf56898a98.jpeg">


<link rel="canonical" href="https://sumumm.github.io/post/1a2fb9e6.html">



<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"https://sumumm.github.io/post/1a2fb9e6.html","path":"post/1a2fb9e6.html","title":"LV02-图像基础和前处理-02-YUV与RGB"}</script>

<script class="next-config" data-name="calendar" type="application/json">""</script>
<title>LV02-图像基础和前处理-02-YUV与RGB | 苏木</title>
  








    <script src="/js/browser_tools_disable.js"></script>

  <noscript>
    <link rel="stylesheet" href="/css/noscript.css">
  </noscript>
<!-- hexo injector head_end start --><link rel="stylesheet" href="https://unpkg.com/hexo-next-tags-plus@latest/lib/tag_plus.css" media="defer" onload="this.media='all'"><!-- hexo injector head_end end --></head>

<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
  <div class="headband"></div>

  <main class="main">
    <div class="column">
      <header class="header" itemscope itemtype="http://schema.org/WPHeader"><div class="site-brand-container">
  <div class="site-nav-toggle">
    <div class="toggle" aria-label="切换导航栏" role="button">
        <span class="toggle-line"></span>
        <span class="toggle-line"></span>
        <span class="toggle-line"></span>
    </div>
  </div>

  <div class="site-meta">

    <a href="/" class="brand" rel="start">
      <i class="logo-line"></i>
      <p class="site-title">苏木</p>
      <i class="logo-line"></i>
    </a>
      <p class="site-subtitle" itemprop="description">我的学习之路</p>
  </div>

  <div class="site-nav-right">
    <div class="toggle popup-trigger" aria-label="搜索" role="button">
        <i class="fa fa-search fa-fw fa-lg"></i>
    </div>
  </div>
</div>



<nav class="site-nav">
  <ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>苏木的家</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类页<span class="badge">42</span></a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档页<span class="badge">673</span></a></li><li class="menu-item menu-item-flink"><a href="/flink/" rel="section"><i class="fa fa-link fa-fw"></i>友人帐</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于我</a></li>
      <li class="menu-item menu-item-search">
        <a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
        </a>
      </li>
  </ul>
</nav>



  <div class="search-pop-overlay">
    <div class="popup search-popup"><div class="search-header">
  <span class="search-icon">
    <i class="fa fa-search"></i>
  </span>
  <div class="search-input-container">
    <input autocomplete="off" autocapitalize="off" maxlength="80"
           placeholder="搜索..." spellcheck="false"
           type="search" class="search-input">
  </div>
  <span class="popup-btn-close" role="button">
    <i class="fa fa-times-circle"></i>
  </span>
</div>
<div class="search-result-container no-result">
  <div class="search-result-icon">
    <i class="fa fa-spinner fa-pulse fa-5x"></i>
  </div>
</div>

    </div>
  </div>

</header>
        
  
  <aside class="sidebar">

    <div class="sidebar-inner sidebar-nav-active sidebar-toc-active">
      <ul class="sidebar-nav">
        <li class="sidebar-nav-toc">
          文章目录
        </li>
        <li class="sidebar-nav-overview">
          站点概览
        </li>
      </ul>

      <div class="sidebar-panel-container">
        <!--noindex-->
        <div class="post-toc-wrap sidebar-panel">
            <div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%B8%80%E3%80%81RGB"><span class="nav-text">一、RGB</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%BA%8C%E3%80%81YUV"><span class="nav-text">二、YUV</span></a><ol class="nav-child"><li class="nav-item nav-level-2"><a class="nav-link" href="#1-YUV%E7%9A%84%E8%B5%B7%E6%BA%90"><span class="nav-text">1. YUV的起源</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#2-YUV%E6%9C%89%E5%93%AA%E4%BA%9B%E7%B1%BB%E5%9E%8B%EF%BC%9F"><span class="nav-text">2. YUV有哪些类型？</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#3-YUV%E5%9C%A8%E5%86%85%E5%AD%98%E4%B8%AD%E6%80%8E%E4%B9%88%E5%AD%98%E5%82%A8%EF%BC%9F"><span class="nav-text">3. YUV在内存中怎么存储？</span></a><ol class="nav-child"><li class="nav-item nav-level-3"><a class="nav-link" href="#3-1-YUV-4-4-4"><span class="nav-text">3.1 YUV 4:4:4</span></a></li><li class="nav-item nav-level-3"><a class="nav-link" href="#3-2-YUV-4-2-2"><span class="nav-text">3.2 YUV 4:2:2</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#3-2-1-YU16%EF%BC%88%E6%88%96%E8%80%85%E7%A7%B0%E4%B8%BA-I422%E3%80%81YUV422P%EF%BC%89"><span class="nav-text">3.2.1 YU16（或者称为 I422、YUV422P）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#3-2-2-YV16%EF%BC%88YUV422P%EF%BC%89"><span class="nav-text">3.2.2 YV16（YUV422P）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#3-2-3-NV16%EF%BC%88YUV422SP%EF%BC%89"><span class="nav-text">3.2.3 NV16（YUV422SP）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#3-2-4-NV61%EF%BC%88YUV422SP%EF%BC%89"><span class="nav-text">3.2.4 NV61（YUV422SP）</span></a></li></ol></li><li class="nav-item nav-level-3"><a class="nav-link" href="#3-3-YUV-4-2-0"><span class="nav-text">3.3 YUV 4:2:0</span></a><ol class="nav-child"><li class="nav-item nav-level-4"><a class="nav-link" href="#3-3-1-YU12%EF%BC%88I420%E3%80%81YUV420P%EF%BC%89"><span class="nav-text">3.3.1 YU12（I420、YUV420P）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#3-3-2-YV12%EF%BC%88YUV420P%EF%BC%89"><span class="nav-text">3.3.2 YV12（YUV420P）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#3-3-3-NV12%EF%BC%88YUV420SP%EF%BC%89"><span class="nav-text">3.3.3 NV12（YUV420SP）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#3-3-4-NV21%EF%BC%88YUV420SP%EF%BC%89"><span class="nav-text">3.3.4 NV21（YUV420SP）</span></a></li></ol></li></ol></li><li class="nav-item nav-level-2"><a class="nav-link" href="#4-YUV%E7%B1%BB%E5%9E%8B%E5%92%8C%E5%AD%98%E5%82%A8%E6%96%B9%E5%BC%8F%E6%80%BB%E7%BB%93"><span class="nav-text">4. YUV类型和存储方式总结</span></a></li></ol></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%B8%89%E3%80%81RGB-%E5%92%8C-YUV-%E4%B9%8B%E9%97%B4%E7%9A%84%E8%BD%AC%E6%8D%A2"><span class="nav-text">三、RGB 和 YUV 之间的转换</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E5%9B%9B%E3%80%81Stride"><span class="nav-text">四、Stride</span></a></li><li class="nav-item nav-level-1"><a class="nav-link" href="#%E4%BA%94%E3%80%81%E5%B0%8F%E7%BB%93"><span class="nav-text">五、小结</span></a></li></ol></div>
        </div>
        <!--/noindex-->

        <div class="site-overview-wrap sidebar-panel">
          <div class="site-author animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
    <img class="site-author-image" itemprop="image" alt="苏木"
      src="/images/avatar.jpg">
  <p class="site-author-name" itemprop="name">苏木</p>
  <div class="site-description" itemprop="description">莫道桑榆晚，为霞尚满天</div>
</div>
<div class="site-state-wrap animated">
  <nav class="site-state">
      <div class="site-state-item site-state-posts">
        <a href="/archives/">
          <span class="site-state-item-count">673</span>
          <span class="site-state-item-name">日志</span>
        </a>
      </div>
      <div class="site-state-item site-state-categories">
          <a href="/categories/">
        <span class="site-state-item-count">42</span>
        <span class="site-state-item-name">分类</span></a>
      </div>
      <div class="site-state-item site-state-tags">
        <span class="site-state-item-count">43</span>
        <span class="site-state-item-name">标签</span>
      </div>
  </nav>
</div>
  <div class="links-of-author animated">
      <span class="links-of-author-item">
        <a href="https://github.com/sumumm" title="GitHub → https:&#x2F;&#x2F;github.com&#x2F;sumumm" rel="noopener me" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
      </span>
  </div>

        </div>
      </div>
    </div>

    
  </aside>


    </div>

    <div class="main-inner post posts-expand">


  


<div class="post-block">
  
  

  <article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN">
    <link itemprop="mainEntityOfPage" href="https://sumumm.github.io/post/1a2fb9e6.html">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="image" content="/images/avatar.jpg">
      <meta itemprop="name" content="苏木">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="苏木">
      <meta itemprop="description" content="莫道桑榆晚，为霞尚满天">
    </span>

    <span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
      <meta itemprop="name" content="LV02-图像基础和前处理-02-YUV与RGB | 苏木">
      <meta itemprop="description" content="">
    </span>
      <header class="post-header">
        <h1 class="post-title" itemprop="name headline">
          LV02-图像基础和前处理-02-YUV与RGB
        </h1>

        <div class="post-meta-container">
          <div class="post-meta">
    <span class="post-meta-item">
      <span class="post-meta-item-icon">
        <i class="far fa-calendar"></i>
      </span>
      <span class="post-meta-item-text">发表于</span>

      <time title="创建时间：2024-01-31 07:44:28" itemprop="dateCreated datePublished" datetime="2024-01-31T07:44:28+08:00">2024-01-31</time>
    </span>
    <span class="post-meta-item">
      <span class="post-meta-item-icon">
        <i class="far fa-folder"></i>
      </span>
      <span class="post-meta-item-text">分类于</span>
        <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
          <a href="/categories/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/" itemprop="url" rel="index"><span itemprop="name">嵌入式开发</span></a>
        </span>
          ，
        <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
          <a href="/categories/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/" itemprop="url" rel="index"><span itemprop="name">04音视频</span></a>
        </span>
          ，
        <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
          <a href="/categories/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/" itemprop="url" rel="index"><span itemprop="name">极客时间-攻克视频技术</span></a>
        </span>
    </span>

  
    <span class="post-meta-break"></span>
    <span class="post-meta-item" title="本文字数">
      <span class="post-meta-item-icon">
        <i class="far fa-file-word"></i>
      </span>
      <span class="post-meta-item-text">本文字数：</span>
      <span>5.2k</span>
    </span>
    <span class="post-meta-item" title="阅读时长">
      <span class="post-meta-item-icon">
        <i class="far fa-clock"></i>
      </span>
      <span class="post-meta-item-text">阅读时长 &asymp;</span>
      <span>19 分钟</span>
    </span>
</div>

        </div>
      </header>

    
    
    
    <div class="post-body" itemprop="articleBody"><p>本文主要是攻克视频技术课程图像基础和前处理——YUV &amp; RGB：原来图像是这么丰富多彩 的相关笔记，若笔记中有错误或者不合适的地方，欢迎批评指正😃。</p>
<span id="more"></span>

<!-- Photo: https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/ -->

<details class="folding-tag" blue><summary> 点击查看使用工具及版本 </summary>
              <div class='content'>
              <table>    <tr>        <td align="center" width=150px>Windows</td>        <td align="left">windows11</td>    </tr>    <tr>        <td align="center">Ubuntu</td>        <td align="left">Ubuntu16.04的64位版本</td>      </tr>    <tr>        <td align="center">VMware® Workstation 16 Pro</td>        <td align="left">16.2.3 build-19376536</td>      </tr></table>
              </div>
            </details>

<details class="folding-tag" blue><summary> 点击查看本文参考资料 </summary>
              <div class='content'>
              <table>    <tr><td align="center">参考方向  </td><td align="center">参考原文</td></tr>    <tr><td align="left">---</td><td align="left"><a href="" target="_blank">--- <i class="fa fa-external-link-alt"></i> </a></td></tr></table>
              </div>
            </details>

<details class="folding-tag" blue><summary> 点击查看相关文件下载 </summary>
              <div class='content'>
              <table>    <tr>        <td align="center">---</td>        <td align="left">--- <a href="" target="_blank">  <i class="fa fa-external-link-alt"></i></a></td>      </tr></table>
              </div>
            </details>

<p>图像的颜色空间是图像和视频技术里面的一个非常重要的知识点，在图像处理、视频编码等技术中你会经常遇到这个概念。</p>
<p>而至于它为什么重要，其实也很好理解。在现实世界中，我们的眼睛每天看到的颜色是千变万化的。为了能够更方便地表示和处理这些颜色，不同应用领域就建立了多种不同的颜色空间，主要包括 RGB 、YUV、CMYK 、 HSI 等（后面两种和这门课程没有关系，因此这里我们不再介绍）。</p>
<p>在视频技术中，我们经常碰到的颜色空间有两种：RGB 和 YUV，接下来我们就逐一看一看。</p>
<h1 id="一、RGB"><a href="#一、RGB" class="headerlink" title="一、RGB"></a><font size=3>一、RGB</font></h1><p>RGB 相对比较简单。顾名思义，它就是指图像的每一个像素都有 R、G、B 三个值。RGB 是我们平常遇到最多的一种图像颜色空间，比如摄像头采集的原始图像就是 RGB 图像，且显示器显示的图像也是 RGB 图像。</p>
<p>一般来说，我们的 RGB 图像，每一个像素都是分别存储 R、G、B 三个值，且三个值依次排列存储。比如对于一张 8bit 位深的 RGB 图，每个值占用一个字节。但是，需要注意的是 RGB 图像像素中 R、G、B 三个值并不一定是按 R、G、B 顺序排列的，也有可能是 B、G、R 顺序排列。</p>
<p>比如 OpenCV 就经常使用 BGR 的排列方式来存储图像。所以在存储和读取 RGB 图像的时候需要稍微注意一下。RGB 和 BGR 的存储方式如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/1b4d7c24133df818b0187fdf56898a98.jpeg" alt="img" style="zoom:25%;" />

<p>虽然 RGB 比较简单，同时在图像处理的时候也经常会用到。但是在视频领域，我们更多地是使用 YUV 颜色空间来表示图像的。这是因为 R、G、B 三个颜色是有相关性的，所以不太方便做图像压缩编码。那 YUV 究竟是怎么表示图像的呢？它又是如何存储在内存当中的呢？我们接下来就来揭开它的“面纱”。</p>
<h1 id="二、YUV"><a href="#二、YUV" class="headerlink" title="二、YUV"></a><font size=3>二、YUV</font></h1><h2 id="1-YUV的起源"><a href="#1-YUV的起源" class="headerlink" title="1. YUV的起源"></a><font size=3>1. YUV的起源</font></h2><p>YUV 跟 RGB 类似，也是一种颜色空间，但其种类会更多更复杂些，所以接下来我们会花大量的篇幅去讲解它。</p>
<p>YUV 最早主要是用于电视系统与模拟视频领域。现在视频领域基本都是使用 YUV 颜色空间。</p>
<p>跟 RGB 图像中 R、G、B 三个通道都跟色彩信息相关这种特点不同，<strong>YUV 图像将亮度信息 Y 与色彩信息 U、V 分离开来。Y 表示亮度，是图像的总体轮廓，称之为 Y 分量。U、V 表示色度，主要描绘图像的色彩等信息，分别称为 U 分量和 V 分量。</strong>这样一张图像如果没有了色度信息 U、V，只剩下亮度 Y，则依旧是一张图像，只不过是一张黑白图像。这种特点有什么好处呢？</p>
<p>在以前，世界上只有黑白电视机，每一帧电视画面都是黑白的，没有色彩信息。当然黑白电视机也不支持显示彩色图像。后来随着技术的发展，出现了彩色电视机，每一帧画面都是有颜色信息的，那当然我们可以使用 RGB、YUV 等颜色空间来表示一帧图像。</p>
<p>但是考虑到兼容老的黑白电视机，如果使用 RGB 表示图像，那么黑白电视机就没办法播放。这是因为 R、G、B 三个通道都是彩色的，而 Y、U、V 就可以。因为黑白电视机可以使用 Y 分量，Y 分量就是黑白图像，而且包含了图像的总体轮廓信息，只是没有色彩信息而已。</p>
<p>好了，讲了 YUV 的起源之后，我们来讲讲 YUV 颜色空间最重要的知识点，那就是 YUV 的类型和存储方式。</p>
<h2 id="2-YUV有哪些类型？"><a href="#2-YUV有哪些类型？" class="headerlink" title="2. YUV有哪些类型？"></a><font size=3>2. YUV有哪些类型？</font></h2><p><strong>YUV 主要分为 YUV 4:4:4、YUV 4:2:2、YUV 4:2:0 这几种常用的类型。</strong>其中最常用的又是 YUV 4:2:0。这三种类型的 YUV 主要的区别就是 U、V 分量像素点的个数和采集方式。</p>
<p>YUV 4:4:4 就是每一个 Y 就对应一个 U 和一个 V；而 YUV 4:2:2 则是每两个 Y 共用一个 U、一个 V；YUV 4:2:0 则是每四个 Y 共用一个 U、V。我们可以通过图片来清晰地看一下三种 YUV 类型的区别。具体如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/image-20240123215723043.png" alt="image-20240123215723043" style="zoom:50%;" />

<p>总的来说：</p>
<p>（1）YUV 4:4:4，每一个 Y 对应一组 UV。</p>
<p>（2）YUV 4:2:2，每两个 Y 共用一组 UV。</p>
<p>（3）YUV 4:2:0，每四个 Y 共用一组 UV。</p>
<p>YUV 4:4:4 这种类型非常简单，所以存储的方式也非常简单。那 YUV 4:2:2 和 YUV 4:2:0 这种共用 U、V 分量的情况，应该在内存中怎么存储呢？下面我就来为你介绍一下。</p>
<h2 id="3-YUV在内存中怎么存储？"><a href="#3-YUV在内存中怎么存储？" class="headerlink" title="3. YUV在内存中怎么存储？"></a><font size=3>3. YUV在内存中怎么存储？</font></h2><p><strong>YUV 存储方式主要分为两大类：Planar 和 Packed 两种。</strong>Planar 格式的 YUV 是先连续存储所有像素点的 Y，然后接着存储所有像素点的 U，之后再存储所有像素点的 V，也可以是先连续存储所有像素点的 Y，然后接着存储所有像素点的 V，之后再存储所有像素点的 U。Packed 格式的 YUV 是先存储完所有像素的 Y，然后 U、V 连续的交错存储。</p>
<p>下面我们就来看看每一种 YUV 类型的存储方式是怎么样的。</p>
<h3 id="3-1-YUV-4-4-4"><a href="#3-1-YUV-4-4-4" class="headerlink" title="3.1 YUV 4:4:4"></a><font size=3>3.1 YUV 4:4:4</font></h3><p>这种类型的 YUV 非常简单，因为每一个 Y 对应一个 U、一个 V，所以存储的方式也非常简单。例如，4 x 2 像素的 YUV 4:4:4 存储图如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/0428a59eb7702e4feb9bafd80ac83553.jpeg" alt="img" style="zoom:25%;" />

<p>可以看到，YUV 4:4:4 和 RGB 图像存储之后的大小是一样的。如果是 8bit 图像，就是每一个像素点需要占用 3 个字节。</p>
<h3 id="3-2-YUV-4-2-2"><a href="#3-2-YUV-4-2-2" class="headerlink" title="3.2 YUV 4:2:2"></a><font size=3>3.2 YUV 4:2:2</font></h3><p>这种类型的 YUV 稍微复杂些，每左右两个像素的 Y 共用一个 U 和一个 V。存储方式主要有以下４种类型。</p>
<h4 id="3-2-1-YU16（或者称为-I422、YUV422P）"><a href="#3-2-1-YU16（或者称为-I422、YUV422P）" class="headerlink" title="3.2.1 YU16（或者称为 I422、YUV422P）"></a><font size=3>3.2.1 YU16（或者称为 I422、YUV422P）</font></h4><p>该类型是 Planar 格式，先存储完 Y，再存储 U，之后存储 V。例如，4 x 2 像素的 YU16 存储图如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/9fb26028da7201cdbc7dd7f8dd83b145.jpeg" alt="img" style="zoom:25%;" />

<h4 id="3-2-2-YV16（YUV422P）"><a href="#3-2-2-YV16（YUV422P）" class="headerlink" title="3.2.2 YV16（YUV422P）"></a><font size=3>3.2.2 YV16（YUV422P）</font></h4><p>该类型也是 Planar 格式，先存储完 Y，再存储 V，之后存储 U。例如，4 x 2 像素的 YV16 存储图如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/6b1a9be5614b35bf7c96fe64ed98bc1e.jpeg" alt="img" style="zoom:25%;" />

<h4 id="3-2-3-NV16（YUV422SP）"><a href="#3-2-3-NV16（YUV422SP）" class="headerlink" title="3.2.3 NV16（YUV422SP）"></a><font size=3>3.2.3 NV16（YUV422SP）</font></h4><p>这种类型是 Packed 格式，先存储完 Y，之后 U、V 连续交错存储。例如，4 x 2 像素的 NV16 存储图如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/79d68992f9c21eff13d118ccabc145aa.jpeg" alt="img" style="zoom:25%;" />

<h4 id="3-2-4-NV61（YUV422SP）"><a href="#3-2-4-NV61（YUV422SP）" class="headerlink" title="3.2.4 NV61（YUV422SP）"></a><font size=3>3.2.4 NV61（YUV422SP）</font></h4><p>这种也是 Packed 格式，与 NV16 不同，这种格式是先存储完 Y，之后 V、U 连续交错存储。例如，4 x 2 像素的 NV61 存储图如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/2f06f11d9c9dd7a49d268e325b846944.jpeg" alt="img" style="zoom:25%;" />

<p>可以看到，4 x 2 像素的 YUV 4:2:2 只需要 16 个字节，而 RGB 图像则需要 24 个字节。也就是说，如果是 8bit 图像，那么 RGB 每一个像素需要 3 个字节，而 YUV 4:2:2 只需要 2 个字节。</p>
<h3 id="3-3-YUV-4-2-0"><a href="#3-3-YUV-4-2-0" class="headerlink" title="3.3 YUV 4:2:0"></a><font size=3>3.3 YUV 4:2:0</font></h3><p>这是最常见也是最常用的 YUV 类型。通常视频压缩都是 YUV 4:2:0 格式的。它是每上、下、左、右 4 个像素点共用一个 U 和一个 V。存储方式主要分为以下４种。</p>
<h4 id="3-3-1-YU12（I420、YUV420P）"><a href="#3-3-1-YU12（I420、YUV420P）" class="headerlink" title="3.3.1 YU12（I420、YUV420P）"></a><font size=3>3.3.1 YU12（I420、YUV420P）</font></h4><p>这种类型是 Planar 格式，先存储完 Y，再存储 U，之后存储 V。例如，4 x 4 像素的 YU12 存储图如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/766ce511056bf5dd3399198398b80016.jpeg" alt="img" style="zoom:25%;" />

<h4 id="3-3-2-YV12（YUV420P）"><a href="#3-3-2-YV12（YUV420P）" class="headerlink" title="3.3.2 YV12（YUV420P）"></a><font size=3>3.3.2 YV12（YUV420P）</font></h4><p>该类型也是 Planar 格式，先存储完 Y，再存储 V，之后存储 U。例如，4 x 4 像素的 YＶ12 存储图如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/880114b51649cbea783ee0be883fc971.jpeg" alt="img" style="zoom:25%;" />

<h4 id="3-3-3-NV12（YUV420SP）"><a href="#3-3-3-NV12（YUV420SP）" class="headerlink" title="3.3.3 NV12（YUV420SP）"></a><font size=3>3.3.3 NV12（YUV420SP）</font></h4><p>这种类型是 Packed 格式，先存储完 Y，之后 U、V 连续交错存储。例如，4 x 4 像素的 NV12 存储图如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/62689d6a46003ced023b9838ca0a0845.jpeg" alt="img" style="zoom:25%;" />

<h4 id="3-3-4-NV21（YUV420SP）"><a href="#3-3-4-NV21（YUV420SP）" class="headerlink" title="3.3.4 NV21（YUV420SP）"></a><font size=3>3.3.4 NV21（YUV420SP）</font></h4><p>这种也是 Packed 格式，与 NV12 不同，这种格式是先存储完 Y，之后 V、U 连续交错存储。例如，4 x 4 像素的 NV21 存储图如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/9ed80ef848c52123fb41413abfa26ebd.jpeg" alt="img" style="zoom:25%;" />

<p>可以看到，4 x 4 像素的 YUV 4:2:0 只需要 24 个字节相比 RGB 图像需要 48 个字节，存储的大小少了一半。也就是说，如果是 8bit 图像，RGB 每一个像素需要 3 个字节。而 YUV 4:2:0 只需要 1.5 个字节。</p>
<h2 id="4-YUV类型和存储方式总结"><a href="#4-YUV类型和存储方式总结" class="headerlink" title="4. YUV类型和存储方式总结"></a><font size=3>4. YUV类型和存储方式总结</font></h2><p>好了，以上就是 YUV 颜色空间的主要类型和存储方式。这里我用表格给你总结了一下。</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/e7a9fcb9f5800eab1fb0a9ed19066588.jpeg" alt="img" style="zoom: 25%;" />

<h1 id="三、RGB-和-YUV-之间的转换"><a href="#三、RGB-和-YUV-之间的转换" class="headerlink" title="三、RGB 和 YUV 之间的转换"></a><font size=3>三、RGB 和 YUV 之间的转换</font></h1><p>我们刚才说到，一般来说，采集到的原始图像、给显示器渲染的最终图像都是 RGB 图像，但是视频编码一般用的是 YUV 图像。那么这中间一定少不了两者的相互转换。那 RGB 如何转到 YUV 呢？YUV 又如何转到 RGB 呢？</p>
<p>在讲转换之前，我们先了解 Color Range 这个东西。对于一个 8bit 的 RGB 图像，它的每一个 R、G、B 分量的取值按理说就是 0 ~ 255 的。但是真的是这样的吗？其实不是的。这里就涉及到 Color Range 这个概念。Color Range 分为两种，一种是 Full Range，一种是 Limited Range。Full Range 的 R、G、B 取值范围都是 0 ~ 255。而 Limited Range 的 R、G、B 取值范围是 16 ~ 235。</p>
<p>了解了 Color Range 之后，我们怎么规范 YUV 和 RGB 之间的互转呢？其实这也是有标准的，目前的标准主要是 BT601 和 BT709（其实还有 BT2020，我们这里不展开讲）。简单来讲，BT709 和 BT601 定义了一个 RGB 和 YUV 互转的标准规范。只有我们都按照标准来做事，那么不同厂家生产出来的产品才能对接上。BT601 是标清的标准，而 BT709 是高清的标准。</p>
<p>下面我们来看看这两种标准分别在 Full Range 和 Limited Range 下的 RGB 和 YUV 之间的转换公式吧。具体如下图所示：</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/19da3510c564b590f92cf969be01d872.jpeg" alt="img" style="zoom: 33%;" />

<p>从上图我们可以看到每种标准下不同 Color Range 的转换公式是不同的。所以<strong>在做 RGB 往 YUV 转换的时候我们需要知道是使用的哪个标准的哪种 Range 做的转换</strong>，并告知对方。这样对方使用同样的标准和 Range 才可以正确的将 YUV 转换到 RGB。</p>
<p>如果是系统采集出来给到用户的图像就是 YUV 的话，你也需要获取这个 YUV 的存储格式、转换标准和 Color Range。这样才能保证正确地处理 YUV 和 RGB 之间的转换。</p>
<h1 id="四、Stride"><a href="#四、Stride" class="headerlink" title="四、Stride"></a><font size=3>四、Stride</font></h1><p>好了，这就是关于 RGB 和 YUV 颜色空间的一些知识。在最后我需要再一次强调一下前一节课中讲到的 Stride。</p>
<p><strong>在处理 YUV 图像的存储和读取的时候，也是有 Stride 这个概念的。事实上，YUV 出问题的情况更多。</strong>在这里举一个例子，比如说一张 1283x720 的图像，一个 Y 分量存储按 16 字节对齐的话应该是每行占用 1296 个字节，所以每读取一行像素的 Y 应该是 1296 个字节，具体如下图所示。千万不要认为是 1283 个字节，不然就会出现“花屏”。这里一定要注意。</p>
<img data-src="https://fanhua-picture.oss-cn-hangzhou.aliyuncs.com/01%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%BC%80%E5%8F%91/04%E9%9F%B3%E8%A7%86%E9%A2%91/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/LV02-%E5%9B%BE%E5%83%8F%E5%9F%BA%E7%A1%80%E5%92%8C%E5%89%8D%E5%A4%84%E7%90%86-02-YUV%E4%B8%8ERGB/img/808b8310bb6dfbabfc3d6fbc2ce88057.jpeg" alt="img" style="zoom:25%;" />

<h1 id="五、小结"><a href="#五、小结" class="headerlink" title="五、小结"></a><font size=3>五、小结</font></h1><p>今天的知识点到这里就讲完了。总结一下，这节课我们主要讲了图像的颜色空间。图像的颜色空间主要有 RGB 和 YUV 两种。其中 RGB 图像每一个像素有 R、G、B 三个值。而 YUV 图像有３种类型，其分类如下：</p>
<p>（1）YUV 4:4:4，一个 Y 对应一个 U 和一个 V；</p>
<p>（2）YUV 4:2:2，左右两个 Y 对应一个 U 和一个 V；</p>
<p>（3）YUV 4:2:0，上下左右四个 Y 对应一个 U 和一个 V。</p>
<p>同时，YUV 在存储的时候也有两种大类：一种是 Planar 格式；一种是 Packed 格式。其中 Planar 格式又分为先存 U 还是先存 V 两种。而 Packed 格式是 UV 交错存储且分为 U 在前还是 V 在前两种。</p>
<p>在图像采集的时候我们一般得到的原始图像是 RGB 图像，并且渲染的时候最终也是用 RGB 图像，而在编 &#x2F; 解码时用的却是 YUV 图像。因此，我们需要在 RGB 和 YUV 之间互转。转换的标准有两种：一种是 BT601；一种是 BT709。</p>
<p>另外，在转换过程中我们还涉及到 Color Range 这个概念。Full Range 的 R、G、B 三个值的范围都是 0 ~ 255。而 Limited Range 的取值范围是 16 ~ 235。在做转换的时候我们需要选择正确的标准和 Color Range。</p>
<p>最后，我再一次提出了 Stride 这个概念。在读取 YUV 图像一行像素的时候一定要区分 Width 和 Stride 的区别。Width 是原始图像的宽，而 Stride 是对齐之后的一行像素使用的字节大小。这个一定要注意，千万不要弄错了。</p>
<blockquote>
<p>思考题：通过这节课的学习，现在你知道我们为什么编码的时候使用 YUV 图像而不使用 RGB 图像了吗？</p>
</blockquote>

    </div>

    
    
    

    <footer class="post-footer">




    <div>
        
            <div style="text-align:center;color: #ccc;font-size:14px;">
            ----------本文结束
            <i class="fas fa-fan fa-spin" style="color: #FF1493; font-size: 1rem"></i>
            感谢您的阅读----------
            </div>
        
    </div>





  
  <div class="my_post_copyright"> 
    <p><span>文章标题:</span><a href="/post/1a2fb9e6.html">LV02-图像基础和前处理-02-YUV与RGB</a></p>
    <p><span>文章作者:</span><a href="/" title="欢迎访问 《苏木》 的学习笔记">苏木</a></p>
    <p><span>发布时间:</span>2024年01月31日 - 07:44</p>
    <p><span>最后更新:</span>2025年06月14日 - 00:25</p>
    <p><span>原始链接:</span><a href="/post/1a2fb9e6.html" title="LV02-图像基础和前处理-02-YUV与RGB">https://sumumm.github.io/post/1a2fb9e6.html</a></p>
    <p><span>许可协议:</span><i class="fab fa-creative-commons"></i> <a rel="license" href= "https://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank" title="Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0)">署名-非商业性使用-禁止演绎 4.0 国际</a> 转载请保留原文链接及作者。</p>  
  </div>
  


          <div class="post-tags">
              <a href="/tags/%E6%9E%81%E5%AE%A2%E6%97%B6%E9%97%B4-%E6%94%BB%E5%85%8B%E8%A7%86%E9%A2%91%E6%8A%80%E6%9C%AF/" rel="tag"><i class="fa fa-tag"></i> 极客时间-攻克视频技术</a>
          </div>

        

          <div class="post-nav">
            <div class="post-nav-item">
                <a href="/post/ee37983e.html" rel="prev" title="LV02-图像基础和前处理-03-缩放算法简介">
                  <i class="fa fa-angle-left"></i> LV02-图像基础和前处理-03-缩放算法简介
                </a>
            </div>
            <div class="post-nav-item">
                <a href="/post/873bd67d.html" rel="next" title="LV02-图像基础和前处理-01-从参数的角度看视频图像">
                  LV02-图像基础和前处理-01-从参数的角度看视频图像 <i class="fa fa-angle-right"></i>
                </a>
            </div>
          </div>
    </footer>
  </article>
</div>






</div>
  </main>

  <footer class="footer">
    <div class="footer-inner">

  <div class="copyright">
    &copy; 2017 – 
    <span itemprop="copyrightYear">2025</span>
    <span class="with-love">
      <i class="fa fa-heart"></i>
    </span>
    <span class="author" itemprop="copyrightHolder">苏木</span>
  </div>
<div class="wordcount">
  <span class="post-meta-item">
    <span class="post-meta-item-icon">
      <i class="fa fa-chart-line"></i>
    </span>
      <span>站点总字数：</span>
    <span title="站点总字数">3.7m</span>
  </span>
  <span class="post-meta-item">
    <span class="post-meta-item-icon">
      <i class="fa fa-coffee"></i>
    </span>
      <span>站点阅读时长 &asymp;</span>
    <span title="站点阅读时长">225:26</span>
  </span>
</div>




    <span id="sitetime"></span>
    <script defer language=javascript>
        function siteTime()
        {
            window.setTimeout("siteTime()", 1000);
            var seconds = 1000;
            var minutes = seconds * 60;
            var hours = minutes * 60;
            var days = hours * 24;
            var years = days * 365;
            var today = new Date();
            var todayYear = today.getFullYear();
            var todayMonth = today.getMonth()+1;
            var todayDate = today.getDate();
            var todayHour = today.getHours();
            var todayMinute = today.getMinutes();
            var todaySecond = today.getSeconds();
            /*==================================================
            Date.UTC() -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳)
            year        - 作为date对象的年份，为4位年份值
            month       - 0-11之间的整数，做为date对象的月份
            day         - 1-31之间的整数，做为date对象的天数
            hours       - 0(午夜24点)-23之间的整数，做为date对象的小时数
            minutes     - 0-59之间的整数，做为date对象的分钟数
            seconds     - 0-59之间的整数，做为date对象的秒数
            microseconds - 0-999之间的整数，做为date对象的毫秒数
            ==================================================*/
            var t1 = Date.UTC(2017, 
                              5, 
                              19, 
                              0, 
                              0, 
                              0); //北京时间
            var t2 = Date.UTC(todayYear,todayMonth,todayDate,todayHour,todayMinute,todaySecond);
            var diff = t2-t1;
            var diffYears = Math.floor(diff/years);
            var diffDays = Math.floor((diff/days)-diffYears*365);
            var diffHours = Math.floor((diff-(diffYears*365+diffDays)*days)/hours);
            var diffMinutes = Math.floor((diff-(diffYears*365+diffDays)*days-diffHours*hours)/minutes);
            var diffSeconds = Math.floor((diff-(diffYears*365+diffDays)*days-diffHours*hours-diffMinutes*minutes)/seconds);
            document.getElementById("sitetime").innerHTML="已在这里 "+diffYears+" 年 "+diffDays+" 天 "+diffHours+" 小时 "+diffMinutes+" 分钟 "+diffSeconds+" 秒";
        }
        siteTime();
    </script>



    </div>
  </footer>

  
  <div class="back-to-top" role="button" aria-label="返回顶部">
    <i class="fa fa-arrow-up fa-lg"></i>
    <span>0%</span>
  </div>
  <div class="reading-progress-bar"></div>

<noscript>
  <div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
</noscript>


  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/next-theme-pjax/0.6.0/pjax.min.js" integrity="sha256-vxLn1tSKWD4dqbMRyv940UYw4sXgMtYcK6reefzZrao=" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/fancyapps-ui/5.0.28/fancybox/fancybox.umd.js" integrity="sha256-ytMJGN3toR+a84u7g7NuHm91VIR06Q41kMWDr2pq7Zo=" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/lozad.js/1.16.0/lozad.min.js" integrity="sha256-mOFREFhqmHeQbXpK2lp4nA3qooVgACfh88fpJftLBbc=" crossorigin="anonymous"></script>
<script src="/js/comments.js"></script><script src="/js/utils.js"></script><script src="/js/motion.js"></script><script src="/js/next-boot.js"></script><script src="/js/pjax.js"></script>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.4.1/search.js" integrity="sha256-1kfA5uHPf65M5cphT2dvymhkuyHPQp5A53EGZOnOLmc=" crossorigin="anonymous"></script>
<script src="/js/third-party/search/local-search.js"></script>




  <script src="/js/third-party/fancybox.js"></script>

  <script src="/js/third-party/pace.js"></script>


  




  

  <script class="next-config" data-name="enableMath" type="application/json">true</script><script class="next-config" data-name="mathjax" type="application/json">{"enable":true,"tags":"none","js":{"url":"https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.js","integrity":"sha256-MASABpB4tYktI2Oitl4t+78w/lyA+D7b/s9GEP0JOGI="}}</script>
<script src="/js/third-party/math/mathjax.js"></script>


 
        <div id="click-show-text"
            data-mobile = false
            data-text = 富强,民主,文明,和谐,自由,平等,公正,法制,爱国,敬业,诚信,友善
            data-fontsize = 15px
            data-random= false>
        </div>
       

      
        <script async src=https://cdn.jsdelivr.net/npm/hexo-next-mouse-effect@latest/click/showText.js></script>
      

      
    




    <script async src="/js/fancybox_param.js"></script>





<!-- APlayer本体 -->



</body>
</html>
